XSIFactory.CreateActiveXObject

導入

v4.0

詳細

ProgID のスクリプトによって指定されたActiveXオブジェクトを作成して戻します(例:"XSI.Collection")。このメソッドは、NetViewベースのHTMLページのコンテキスト内で使用すると便利です。"Scripting.FileSystemObject"オブジェクトのようなオートメーションオブジェクト(COm オブジェクト)を作成する場合に NetViewの警告ダイアログが表示されません。また、他のスクリプト言語(JScript、Python、PerlScriptなど)を使用してActiveXオブジェクトを作成するさまざまな方法を覚えるよりも、このメソッドを使う方が便利です。

各種スクリプト言語では、オートメーションオブジェクトを作成する機能がサポートされています(たとえばJScript の"new ActiveXObject"など)。ただし、Netviewから呼び出すと、ネイティブメソッドでは警告メッセージが表示されてしまいます。これは、多くの ActiveXオブジェクト("Scripting.FileSystemObject"や"Microsoft.XMLDOM"などのオブジェクト)がWebページに含まれると問題が生じる可能性があると判断されるためです。ただし、Softimage でNetviewページを実行するうえでは、これらのセキュリティに関する警告は意味をなさないため、このメカニズムを用いて警告を省略することができます。

Softimage のオートメーションオブジェクト(ApplicationXSIFactoryXSIMathなど)はすべて安全と判断されるため、作成時にこのメソッドを使用する必要はありません。

スクリプト 構文

oReturn = XSIFactory.CreateActiveXObject( ProgID );

戻り値

新しく作成されたオブジェクト

パラメータ

パラメータ タイプ 詳細
ProgID String ProgIDとしてのオブジェクトの名前("servername.typename")。たとえば、"Scripting.FileSystemObject"や"Excel.Sheet"となります。

1. VBScript の例

' 
' This function is a useful tool within Netview Scripts that want to use 
' Automation objects like "Scripting.FileSystemObject"
' 
function SafeCreateObject( in_ProgID )
        on error resume next
        ' First create our ActiveX (which is marked as safe)
        set oXSIFactory = CreateObject( "XSI.Factory" )
        ' Use xsifactory to create the object
        set oOBj = oXSIFactory.CreateActiveXObject( in_ProgID )
        if err.number <> 0 then
                ' Problem might be that user is running an older version of Softimage, so 
                ' try the old version (this method might pop a ActiveX warning dialog)
                err.Clear
                set oObj = CreateObject( in_ProgID )
        end if
        set SafeCreateObject = oObj
end function
' Example use
set oXML = SafeCreateObject( "Microsoft.XMLDOM" )
oXML.load "c:\info.xml"

2. JScript の例

function getFileSystemObject()
{
        // Avoid the warning dialog that will appear NetView
        // by getting Softimage to create the object for us
        var oXSIFactory = new ActiveXObject( 'XSI.Factory' );
        var fso = oXSIFactory.CreateActiveXObject( 'Scripting.FileSystemObject' );              
        return fso ;            
}

3. Python の例

import win32com.client
my_xsifactory = win32com.client.Dispatch( "XSI.Factory" )
my_fso = my_xsifactory.CreateActiveXObject( "Scripting.FileSystemObject" )
Application.LogMessage( my_fso.FolderExists( 'C:\\temp' ) )